package com.hxx.day8;

import org.junit.Test;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 * 四大核心函数
 */
public class TestDemo2 {
    /**
     * 消费型接口
     */
     @Test
    public void test1(){
        Consumer<String> consumer = (x)-> System.out.println(x);
        consumer.accept("hello");
    }
    /**
     * 作为方法的参数类型使用
     */
    @Test
    public void test2(){
        testConsumer("world",(x)-> System.out.println(x));
    }
    //作为方法的参数类型使用
    public void testConsumer(String str,Consumer<String> consumer){
        consumer.accept(str);
    }
    /**
     * 供给型接口
     */
     @Test
    public void test3(){
        Supplier<String> supplier = ()->"供给型接口";
        System.out.println(supplier.get());
    }
    /**
     * 作为方法的参数类型使用
     */
     @Test
    public void test4(){
        testSupplier(()->"给什么就返回什么");
    }
    //作为方法的参数类型使用
    public void testSupplier(Supplier<String> supplier){
        System.out.println(supplier.get());
    }
    /**
     * 函数型接口
     */
     @Test
    public void test5(){
         //两个参数，第一个表示参数的类型，第二个表示返回值的类型
        Function<String,Integer> function = (x)->x.length();
        System.out.println(function.apply("hello"));
    }
    /**
     * 函数型接口作为方法的参数类型使用
     */
     @Test
    public void test6(){
        testFunction("springboot",(x)->x.length());
    }
    //作为方法的参数类型使用
    public void testFunction(String str,Function<String,Integer> function){
        System.out.println(function.apply(str));
    }

    /**
     * 断言型接口
     */
     @Test
     public void test7(){
         Predicate<String> predicate = (x)->x.length()>5;
        System.out.println(predicate.test("hello123"));
    }
     /**
      * 断言型接口作为方法的参数类型使用
      */
     @Test
    public void test8(){
        testPredicate("hello",(x)->x.length()>5);
    }
    //作为方法的参数类型使用
    public void testPredicate(String str, Predicate<String> predicate){
        System.out.println(predicate.test(str));
    }
}


































